home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 1997 March / Software of the Month Club 1997 March.iso / pc / dos / biz / nav / readme < prev    next >
Encoding:
Text File  |  1997-01-07  |  70.0 KB  |  1,395 lines

  1. NAV - Mutual Fund Performance Analyzer, Release 2.
  2. (c) Copyright 1996 Tekniq. All Rights Reserved.
  3.  
  4. README date: 12/25/96
  5.  
  6.  
  7. NAV
  8. ---
  9.  
  10. NAV is a DOS shareware program for mutual fund performance analysis, which:
  11.  * displays and prints graphs of weekly mutual fund price changes
  12.  * analyzes volatility and reward/risk
  13.  * compares performance of funds over various time periods
  14.  * calculates five types of moving averages and buy&sell signals
  15. NAV comes with up-to-date data on 330 US mutual funds and indices, and can also
  16. analyze data that you supply. Registered users receive weekly data updates.
  17.  
  18. Try the program to decide if it is useful to you. If it is, send your:
  19. (1) name
  20. (2) US mail address
  21. (3) Email address
  22. (4) phone number(s)
  23. (5) the location from which you downloaded NAV
  24. (6) registration fee ($20), checks payable to Tekniq
  25.     (state of Washington residents add 8.2% sales tax=$1.64)
  26. to:
  27.   Tekniq
  28.   PO Box 201
  29.   Issaquah, WA 98027-0201
  30.  
  31. Email: randyn@eskimo.com
  32. URL:   http://www.eskimo.com/~randyn (beginners: download readme)
  33. FTP:   ftp.eskimo.com, directory u/r/randyn
  34.  
  35. It is important to register, as up-to-date data is available only to registered
  36. users via an encryption key. The key is changed periodically, and registered
  37. users are notified. It is also important to include your Email address, for
  38. fastest notification of new keys. Your responsibility as a registered user is
  39. to notify me if your US mail address, Email address, or phone number changes.
  40. If within the first two months of use you are not satisfied with the software,
  41. notify me for a refund. Feel free to share NAV (but not the key) with others,
  42. and encourage them to register.
  43.  
  44. A set of data files current to December 1994 are available to help you evaluate
  45. the program. A few of the up-to-date data files can also be viewed, but the
  46. majority of the data sets require the encryption key. The program can also
  47. evaluate data that you supply in ASCII (unencrypted) text form. The key is a
  48. short ASCII string, like a password. Please do not share the key with friends,
  49. to save them the cost of becoming registered users, and please do not put the
  50. key on a network or public bulletin board. Instead, show others what the
  51. program can do, and encourage them to become registered users. I've set the
  52. registration fee low so anyone with a computer can afford it.
  53.  
  54. "NAV" stands for Net Asset Value.
  55.  
  56. Date current key was created: November 06, 1996 (Release 1)
  57.  
  58. Dates previous keys were created: April 23, 1996 (beta test)
  59.  
  60. Expected date next key will be created: January 01, 1997
  61.  
  62.  
  63. System Requirements
  64. -------------------
  65.  
  66. NAV requires VGA video (640x480, 16 colors), DOS (Windows is not necessary,
  67. though it will run under Windows), and about 4 Megabytes of memory. If you have
  68. less than 4 Megabytes of memory, read the sections below on "Out of Memory",
  69. "Installing Device Drivers", "LIM.SYS", and "EMS.SYS" for a technique to
  70. emulate the needed memory. NAV itself uses only a small amount of memory, but a
  71. large amount of memory is required to hold the data for all the funds. A mouse
  72. will be used if present.
  73.  
  74.  
  75. Disclaimer
  76. ----------
  77.  
  78. I try to provide accurate, up-to-date data on all the mutual funds and indices
  79. that I track, but I cannot guarantee accuracy. Use this information at your own
  80. risk. I am not responsible for financial decisions you make using this program
  81. and data. If you are going to make an investment decision, don't base it solely
  82. on this program and data; confirm it first with other sources of information.
  83. Then, only make the decision if you are willing to accept full responsibility
  84. for it.
  85.  
  86.  
  87. Other Mutual Fund Factors
  88. -------------------------
  89.  
  90. NAV performs technical analysis on mutual funds, but there are other
  91. fundamental factors you should consider before selecting a mutual fund. Some of
  92. them are:
  93.  
  94. (1) Portfolio manager. Who runs the fund? How long have they been in charge?
  95. If not long, were they in charge of another fund prior to that? How was their
  96. record? Some fund families attempt to hide their portfolio managers by stating
  97. their funds are run by a "team", the members of which they are loathe to name.
  98. They are attempting to nullify the effects of a future departure of a "star"
  99. manager, which can cause shareholder assets to be withdrawn, perhaps to follow
  100. the manager to their new location. How old are the portfolio managers? If they
  101. are 70 years old, you have to wonder how long they will continue to be on the
  102. job, even if they have an outstanding record. What if you invest, and they
  103. announce their retirement the next day?
  104.  
  105. (2) Fund objective and market capitalization, as affected by asset growth due
  106. to popularity resulting from outstanding recent performance. Some funds that
  107. started out as smallcap funds (and built outstanding records with that market
  108. capitalization), are now midcap funds with several billion dollars of assets.
  109. In general, smallcap funds are most effective as smallcap funds when they
  110. remain relatively small (under a billion dollars of assets). If significant
  111. and rapid asset growth has occured, previous performance should be discounted.
  112. Also, be sure the fund invests in what you think it does. Some funds with "blue
  113. chip" in their name don't invest in blue chips, etc. Read the prospectus and
  114. annual report.
  115.  
  116. (3) Management fees and loads. Expensive funds need to do that much better than
  117. efficiently run funds just to match their performance.
  118.  
  119. (4) Turnover. Low turnover funds in general will not generate as much of a tax
  120. burden due to capital gains distributions.
  121.  
  122. (5) Foreign exposure. Many domestic equity funds invest significant portions of
  123. their portfolios overseas. Be sure to consider this if the percent of foreign
  124. investments is an important part of your personal portfolio strategy.
  125.  
  126.  
  127. Location
  128. --------
  129.  
  130. The files can be downloaded by anonymous FTP from host ftp.eskimo.com in
  131. directory ~randyn. Most are contained in NAV.ZIP, along with this README file,
  132. which serves as a user manual. Some are also available for separate download.
  133. Note that directory ~randyn will not be visible when you connect to the root
  134. directory at ftp.eskimo.com, but typing "cd ~randyn" will place you there.
  135. Alternatively, "cd u/r/randyn" will get you there too. They are also available
  136. on the world wide web at http://www.eskimo.com/~randyn.
  137.  
  138. The files are:
  139.   NAV.EXE     Analysis program
  140.   README      Documentation (user manual)
  141.   README.NEW  Announcements of recent changes
  142.   DATA.ZIP    Data files (fund and index price histories), key encrypted
  143.   94.ZIP      Data files, current to December 1994, default encrypted
  144.   LIM.SYS     LIM EMM (expanded memory) emulator
  145.   XMS.SYS     XMS (extended memory) emulator
  146.   FUNDS       List of the funds in DATA.ZIP
  147.   A0.EXE      Program to unencrypt .NAV files (default)
  148.   A1.EXE      Program to unencrypt .NAV files (key required)
  149.   UPDATE.EXE  Program to update .NAV files
  150.   UPDATE.DAT  Update data for .NAV files
  151.   OPT         New optimization values, if UPDATE.DAT is present
  152.   NEWKEY.EXE  Program to update files for a new encryption key
  153.   X0.EXE      Program to encrypt .NAV files (default)
  154.   X1.EXE      Program to encrypt .NAV files (key required)
  155.  
  156. Also in that location is UNZ512X3.EXE, a self-extracting binary which contains
  157. UNZIP.EXE. If you need an unzip utility, I recommend you (1) create C:\UNZIP,
  158. (2) download UNZ512X3.EXE into it, (3) execute it to extract UNZIP.EXE, and
  159. (4) either copy UNZIP.EXE to a directory on your PATH, or put C:\UNZIP on your
  160. PATH. UNZIP is freeware; there is no fee for using it. Note that UNZ512X3.EXE
  161. contains a README file, so you do *not* want to unpack it in the same directory
  162. as NAV.ZIP (C:\NAV), or you will overwrite one README file with the other.
  163.  
  164. There is a directory called Incoming which is available for uploading. For
  165. example, if you have acquired or created some data sets for mutual funds that
  166. aren't already present and you would like to have them added, upload them to
  167. Incoming and send me Email. Just use 'put' instead of 'get' in ftp.
  168.  
  169. Note that eskimo is a linux system, and unlike DOS, letter case in filenames is
  170. significant. The file and directory names on eskimo will be in lowercase, and
  171. you need to type them that way to 'get' them. In this README, however, I'll use
  172. uppercase to make the names stand out. All files, including this README, should
  173. be retrieved using binary mode.
  174.  
  175. If README.NEW is present, it contains announcements of recent changes, such as
  176. new features, key changes, and new data sets.
  177.  
  178.  
  179. An FTP Session
  180. --------------
  181.  
  182. FTP stands for File Transfer Protocol, a way to transfer files across the
  183. Internet. Once logged onto a computer connected to the Internet, use the
  184. following commands (comments are enclosed in angle brackets <>):
  185.  
  186.   ftp ftp.eskimo.com
  187.     <You'll be asked for a logon ID.>
  188.   anonymous
  189.     <You'll be asked for a password; use your Internet Email address.>
  190.   joeblow@internet.com  <Don't type this; fill in yours.>
  191.     <You'll be logged on, and placed in the root directory.>
  192.     <Passwords are not printed on the screen when you type them.>
  193.     <If you do a 'dir' you will not see directory ~randyn, but
  194.     execute the next command anyway. If it fails, cd to u/r/randyn.>
  195.   cd ~randyn
  196.     <Now you'll be at the right location; set file transfer to binary.>
  197.   binary
  198.     <To see what files are available, type "dir".>
  199.   dir
  200.     <Now download the file.>
  201.   get nav.zip
  202.     <Nav.zip is about 850K; when it's done, logoff.>
  203.   bye
  204.  
  205. That's it. Some Internet providers put you into a "user friendly" menu system
  206. when you dial into their machine via a modem. Usually there is a menu selection
  207. for starting a command shell, from which you can issue the ftp command. If not,
  208. there may be an ftp service menu selection. If you can't figure out how to ftp,
  209. ask your system administrator. If you don't have an Internet account or for
  210. some reason ftp is not available, it is going to be tough to keep your data
  211. up-to-date, as anonymous ftp is the primary way I plan to make current data
  212. available. After you use ftp to transfer NAV.ZIP from ftp.eskimo.com to your
  213. Internet Service Provider, download it to your local PC. If you don't know how
  214. to do that, ask your system administrator; usually your ISP will have a program
  215. you can invoke to transfer a file to your modem's terminal emulator program.
  216.  
  217.  
  218. Installation
  219. ------------
  220.  
  221. Create a directory called NAV in the root directory of your hard disk, for
  222. example, C:\NAV, and place NAV.ZIP into it. Unpack with the command "UNZIP
  223. NAV". The UNZIP.EXE program is also available on ftp.eskimo.com (see above).
  224. This will unpack the files listed above. Then do "UNZIP DATA", which will
  225. create many .NAV files, and a file called OPT. The .NAV files each contain one
  226. data set, usually for a mutual fund, and are named by ticker symbols. For
  227. example, FMAGX.NAV contains data for Fidelity Magellan. Some of the .NAV files
  228. contain data for market indices, such as SP500.NAV, however I will refer to all
  229. data sets as "funds". NAV will look for its data files in the current
  230. directory, so leave them in the same directory, and execute NAV from there. OPT
  231. contains moving average values, and will usually be up-to-date. If not, NAV
  232. will generate a new OPT file.
  233.  
  234. The simplest way to run NAV is to make C:\NAV the current directory and enter
  235. "NAV". This will cause NAV.EXE to execute, load in all the .NAV files, either
  236. calculate moving average values for each of them or fetch them from the OPT
  237. file, and display the data for you to evaluate.
  238.  
  239. Most of the data is measured weekly, at the close of the week on either Friday
  240. or Sunday (which uses the previous Friday's closing price). The data also
  241. includes distributions for most funds. For some funds, the distribution data is
  242. represented explicitly and the price data is as reported on the given date; for
  243. others, the distribution data has been used to adjust the price data. The data
  244. also includes the fund name, and category ("growth", "bond", "international",
  245. etc.). Dates may also be present without corresponding prices; these are
  246. missing data. NAV handles these by interpolating from the previous and next
  247. known prices. Missing data points are represented by red dots when graphed
  248. (normal data are plotted with white dots). The data may also include
  249. information on share splits, which are rare for mutual funds, but do happen.
  250.  
  251.  
  252. DOS Functionality
  253. -----------------
  254.  
  255. A prerequisite to using NAV (or any application software) is a basic
  256. understanding of how your computer, its hardware, and its operating system
  257. work. Read the manuals that come with your machine. There are plenty of books
  258. you can buy at any bookstore that explain how to use DOS or Windows. I'll help
  259. you use NAV if you have problems, but I won't answer questions like: "What does
  260. 'file not found' mean?", or "How do I copy a file?"
  261.  
  262.  
  263. KEY
  264. ---
  265.  
  266. Once you have registered NAV and have the encryption key, there are three ways
  267. to use it:
  268. (1) Create an environment variable KEY. For example, add the following to
  269.     AUTOEXEC.BAT: SET KEY=FOO
  270. (2) Create a file called KEY in the same directory as NAV.EXE, usually
  271.     C:\NAV, containing the key on a line all by itself.
  272. (3) When you run NAV.EXE, pass the key to it: "NAV /KEY=FOO"
  273. Keys are case sensitive; FOO and foo are different. The key will be changed
  274. every six months, in January and July. Check near the top of README (this file)
  275. for the date the current key was created, and the expected date of the next
  276. key. Keys are limited to 32 characters, and cannot be blank.
  277.  
  278.  
  279. NEWKEY
  280. ------
  281.  
  282. When an encryption key change is announced, you can use NEWKEY.EXE to update
  283. your data files to the new key. You should do this before you run UPDATE.EXE.
  284. NEWKEY will update the following files: OPT, UPDATE.DAT, *.NAV, KEY. NEWKEY
  285. takes one or two parameters. If the old key is contained in a KEY file or in a
  286. KEY= environment variable, you only need to give the new key, for example:
  287.   NEWKEY BAR
  288. If you use the key by passing it to NAV on the command line ("NAV /KEY=FOO"),
  289. then you need to supply both the old and new keys to NEWKEY, for example:
  290.   NEWKEY FOO BAR
  291. The first (optional) parameter is the old key and the second is the new key. If
  292. there is a KEY file, NEWKEY will update it. If there is a KEY= environment
  293. variable, NEWKEY will remind you to update it. If you download new OPT and
  294. UPDATE.DAT files (which use the new key) before running NEWKEY, it will tell
  295. you that they already use the new key, and they will not be changed. To
  296. reencrypt files, NEWKEY uses a temporary file called __NEWKEY.@@@, which is
  297. deleted before NEWKEY exits.
  298.  
  299.  
  300. Parameters
  301. ----------
  302.  
  303. Usually you will run NAV.EXE with no parameters, other than perhaps /KEY=, and
  304. it will display the data for all .NAV files in the current directory (C:\NAV).
  305. If you wish to look at only one or a few .NAV files, you can give their names
  306. on the command line like this:
  307.   NAV FMAGX
  308. which will only display Fidelity Magellan (the .NAV extension is implied), or:
  309.   NAV F*.NAV
  310. which will display all .NAV files starting with F, which includes all Fidelity
  311. and Founders funds, and a few others.
  312.  
  313. Giving a parameter of /UMA, /WMA, /EMA, /AMA, or /VIDYA will select the
  314. corresponding type of moving average to use for all funds (see Moving Averages
  315. below); this selection will be recorded in the OPT file. By default, NAV
  316. selects the type of moving average that is optimal for each fund.
  317.  
  318. Giving a parameter of /OPT will cause it to calculate the optimal moving
  319. average values, and then exit (prior to running the interactive graphical
  320. portion of the program); this is useful in batch files when values must be
  321. recalculated but the interactive portion of the program is not needed. When
  322. running NAV in this fashion, it is useful to redirect output to a file:
  323.   NAV /OPT >LOG
  324.  
  325. Executing "NAV /HELP" will display the list of valid parameters. Giving a
  326. parameter of /REMA will cause NAV to reselect the optimal type of moving
  327. average for each fund; this is useful if all funds have been forced to use EMA,
  328. for example. Giving a parameter of /REOPT will cause NAV to recalculate all
  329. moving average values, and is equivalent to deleting the OPT file prior to
  330. running NAV.
  331.  
  332.  
  333. Data Updates
  334. ------------
  335.  
  336. Normally I will update all funds with weekly closing prices by Sunday evening
  337. for the previous Friday market close. My ISP is difficult to dial into on
  338. Sunday evening, so I expect to upload fresh data every Monday morning. This is
  339. the plan; I don't guarantee it. I expect to be about 90% successful at getting
  340. the data available by Monday morning. I'll do my best to keep fresh data
  341. available, but I can't guarantee it. If you notice a missing distribution, let
  342. me know, as they are easy to miss. I don't know if distribution by anonymous
  343. FTP will be feasible; if you encounter unreasonable difficulties, let me know.
  344.  
  345. Most of the data files will be updated weekly, but there are a few exceptions.
  346. The 44 Wall Street fund was merged into the 44 Wall Street Equity fund in
  347. mid-1993, so there will be no new data on it. (During 1996, the 44 Wall Street
  348. Equity fund was renamed to the Matterhorn Growth fund.) The S&P 500 dividend
  349. yield and P/E ratio data sets are updated only every few months, since I have
  350. to go to the library to get them. If you learn of an on-line source for those
  351. numbers, let me know. Currently the data sets for the Money Market yield and
  352. the CPI (Consumer Price Index) are updated on a yearly basis. I'm looking for a
  353. few more index data sets: the price of 1 oz of gold, the original yield at
  354. issue (not "price") of 30-year treasury bonds, and the inflation rate (CPI),
  355. going back to 1986. The current CPI numbers are yearly summaries; I'd prefer
  356. monthly or weekly data.
  357.  
  358. NAV.ZIP is a large file (currently 850K), so I won't update it often. There is
  359. a separate DATA.ZIP available on ftp.eskimo.com, but it is over 750K, and
  360. tiresome to download every week. DATA.ZIP will be updated about every two
  361. months; it contains the complete price and distribution histories. Every week,
  362. a new UPDATE.DAT file will be placed on ftp.eskimo.com. When you see one with a
  363. date later than your last update, download it and run UPDATE.EXE. By default,
  364. UPDATE.EXE will use the information in UPDATE.DAT; if the update information is
  365. in a different file, you can supply the file name as an argument to UPDATE.EXE,
  366. for example:
  367.   UPDATE NEWINFO.DAT
  368. UPDATE.DAT is encrypted, but UPDATE.EXE can read it, provided the key is
  369. available. UPDATE.EXE extracts the new data from UPDATE.DAT and appends it to
  370. the end of each of the encrypted .NAV files. If you try to apply the same
  371. changes twice, the .NAV files are not changed. When UPDATE.EXE adds information
  372. to a .NAV file, it will report the file name and new data. If your .NAV files
  373. have become significantly out of date, download the current DATA.ZIP and unzip
  374. it, then download UPDATE.DAT and run UPDATE.EXE. The plan is for all new price
  375. and distribution data to be accumulated in UPDATE.DAT over a period of a few
  376. months, after which a new DATA.ZIP will be generated with all changes included,
  377. and UPDATE.DAT will be deleted.
  378.  
  379. Registration includes access to all files, plus the current encryption key.
  380. Registered users will also be notified of key changes. Registration does *not*
  381. include a guarantee that I will continue to provide weekly data updates
  382. forever, though my intent is to provide them for the foreseeable future. If the
  383. time comes when I'm no longer able (or no longer desire) to provide weekly data
  384. updates, I will try to find someone to take over that task. If I can't find
  385. someone, I'll offer a full or partial refund to recently registered users. As
  386. of 12/96, I've been doing weekly data updates for the last six years.
  387.  
  388. Registered users have access to encryption and unencryption utilities (see
  389. below) which enable them to view the data in plain text (ASCII) format. If
  390. necessary, they can make modifications, corrections, or fill in missing data.
  391. The utilities are not to be used to resell or redistribute the data provided
  392. with NAV; that is prohibited. Registered users can use the data with other
  393. analysis programs, as long as they do not allow anyone else to access the data.
  394.  
  395.  
  396. Moving Averages
  397. ---------------
  398.  
  399. NAV displays a number of statistics relating to fund performance, but its real
  400. job is calculating moving averages. These are trend curves which compare recent
  401. prices to historical behavior, and are used to make buy and sell decisions. NAV
  402. supports five moving averages:
  403.  
  404. UMA - Unweighted Moving Average. This is calculated by adding the previous N
  405. prices and dividing by N. For example, let P[i] be the price at week i, and
  406. U4[i] be the 4-week UMA at week i. U4[5]=(P[1]+P[2]+P[3]+P[4])/4,
  407. U4[6]=(P[2]+P[3]+P[4]+P[5])/4, and so on. Window sizes range from 2 to 60, in
  408. increments of 2 (2,4,6,8,...). For U4[i] where i<5, use Uj[j+1] where j+1=i;
  409. that is, U4[1]=U0[1]=P[1], U4[2]=U1[2]=P[1], U4[3]=U2[3]=(P[1]+P[2])/2, and
  410. U4[4]=U3[4]=(P[1]+P[2]+P[3])/3. In other words, if there are not enough
  411. preceding points for the window size, use the largest window size possible that
  412. does have enough points.
  413.  
  414. WMA - Weighted Moving Average. Similar to UMA, but gives more weight to recent
  415. price points. W4[5]=(P[1]+2*P[2]+3*P[3]+4*P[4])/(1+2+3+4). The most recent
  416. price point, P[4], receives four times the weight of the most distant price
  417. point, P[1]. Window sizes are the same as for UMA. Like UMA, Wi[k] for i>=k is
  418. defined as Wj[j+i] where j+1=i.
  419.  
  420. EMA - Exponential Moving Average. The number of data points used to calculate
  421. UMA and WMA are called a "window size", but EMA has no fixed window size.
  422. Instead, E[i]=C*P[i]+(1-C)*E[i-1], and 0<C<1, and E[1]=P[1]. C is the
  423. coefficient, but for consistency with UMA and WMA we'll call it a weight. If
  424. C=.8 then a lot of weight (80%) is given to the current price point and
  425. relatively little (20%) to previous price points, which means the EMA will
  426. follow the price graph very closely. If C=.2 then a lot of weight is given to
  427. previous price points and relatively little to the current price point, which
  428. means the EMA will be a gradually moving curve that doesn't follow the price
  429. graph closely. Weights range from .10 to .80, in increments of .02 (.10,.12,
  430. .14,.16,...).
  431.  
  432. AMA - Adaptive Moving Average. AMA has a window size, but only to calculate
  433. recent volatility. AMA is calculated in the following way: select a window
  434. size, between 2 and 30, inclusive, in increments of 2. calculate Direction,
  435. Volatility, and Efficiency Ratio (ER) per data point:
  436.   Direction=Price[0]-Price[N]
  437.     where Price[N] is the price N weeks ago. Price[0] is the current price.
  438.   Volatility=sum from 1 to N of |Price[i-1]-Price[i]| (absolute values)
  439.   ER=Direction/Volatility
  440.   C=ER*ER
  441.     Square ER to push small values toward zero; this keeps AMA from moving when
  442.     there is no clear trend. C is the coefficient.
  443.   AMA[0]=AMA[1]+C*(Price[0]-Price[1])
  444.     where AMA[1] is for the immediately previous data point.
  445. In addition, there is an adjustment to C if it is detected that the price is
  446. creeping away from the AMA. This implementation of AMA is derived from Perry
  447. Kaufmann's book "Smarter Trading", McGraw-Hill, pp. 133-143. But the algorithm
  448. has been modified in several ways.
  449.  
  450. VIDYA - Variable Index Dynamic Average. VIDYA is calculated in the following
  451. way: select a window size between 2 weeks and 20 weeks, inclusive, in
  452. increments of 2, and a primary weight between .10 and Max, inclusive, in
  453. increments of .02. Max is determined by the algorithm. The window size is used
  454. to calculate the volatility index for each data point:
  455.   K=Sigma(X-days)/Sigma(Reference)
  456.     where Sigma is a function that measures volatility. For Sigma, NAV uses
  457.     a sum of the price changes over the last X days.
  458. The reference value represents the normal value of Sigma across the data set;
  459. NAV uses an approximation of the average of Sigma across all valid data points
  460. for Sigma(Reference). The following conditions occur:
  461.   when K=1, volatility is "normal"
  462.   when K<1, volatility is "low"
  463.   when K>1, volatility is "high"
  464. Next, determine the maximum value of Wt (primary weight) by: K*Wt<1 -> Wt<1/K.
  465. After 1/K is calculated, subtract .01 and assign the value to Max. Now:
  466.   VIDYA=K*Wt*C0 + (1-K*Wt)*V1
  467.     where C0 is today's price and V1 is yesterday's VIDYA. Wt is the EMA
  468.     coefficient and K is the volatility index.
  469. This implementation of VIDYA is based on "The New Technical Trader", by Tushar
  470. Chande and Stanley Kroll, Wiley, pp. 49-72. The one difference is that Chande
  471. and Kroll use VIDYA=K*Wt*C0+(1-K*Wt)*C1, where C1 is yesterday's price. V1
  472. seems to give slightly better results.
  473.  
  474. AMA and VIDYA are adaptive, in the sense that they try to capture the concept
  475. of fluctuating volatilty. When volatility is low, they move very slowly. When
  476. volatility increases, they move more quickly to "catch up" with the trend.
  477.  
  478. NAV can use any of these moving averages (but only one at a time) for each
  479. fund; by default NAV will try them all, and select the one that gives the best
  480. result over the eval period (see Trial and Eval Periods, below). Once a moving
  481. average type has been selected, NAV will continue to use it for the fund until
  482. either the eval period changes (a new year is started), or it is changed
  483. manually by the user. The /REMA switch can be used to reselect optimal moving
  484. averages, or the Y key.
  485.  
  486. The buy and sell signals generated by NAV are offset from the moving average
  487. by buy and sell thresholds. To generate a signal, the price must meet or
  488. exceed the moving average plus the threshold. For example, "EMA .64 (+3-5)"
  489. means the coefficient (weight) is .64, a buy signal is generated when
  490. P[i]>=1.03*E[i], and a sell signal is generated when P[i]<=.95*E[i]. The
  491. positive number is the buy threshold and the negative number is the sell
  492. threshold. So for a buy signal to be generated, the price must meet or exceed
  493. the moving average by 3%, and for a sell signal to be generated, the price must
  494. meet or fall below the moving average by 5%. "UMA 12 (+1-0)" means the
  495. unweighted window size is 12 data points (usually weeks), a buy signal is
  496. generated when P[i]>=1.01*U[i], and a sell signal is generated when P[i]<U[i].
  497. It is possible for threshold values to be zero, in which case crossing the
  498. moving average will generate the signal immediately. But for a zero threshold,
  499. the price must cross, not just meet, the average; this is to eliminate the
  500. special case of (+0-0) and a price which hits the average exactly triggers
  501. simultaneous buy and sell signals. Buy and sell thresholds can range from 0% to
  502. 10%.
  503.  
  504. NAV will calculate the best values for window size, weight, buy and sell
  505. thresholds. "Best" is defined as the values which give the greatest investment
  506. value at the end of the trial period, or at the end of the last data point if
  507. there are no separate trial and eval periods (see below).
  508.  
  509. NAV will accept a parameter to indicate which moving average to use. Executing
  510. "NAV /UMA" will cause NAV to use the Unweighted Moving Average for all funds.
  511. Similarly, parameters of "/WMA" and "/EMA" can be used to set the moving
  512. average to Weighted or Exponential. "/AMA" and "/VIDYA" set the moving average
  513. to Adaptive and Variable Index Dynamic Average, respectively.
  514.  
  515. Whipsaws are buy and sell signals that occur very close to each other. To
  516. discourage selection of values that cause many whipsaw signals, NAV penalizes
  517. the values that tend to cause them, thus favoring those that don't. The penalty
  518. consists of subtracting a certain percentage of net assets proportional to how
  519. close the whipsaw signals are. For example, .9% is subtracted for signals that
  520. are 1 week apart, and .1% is subtracted for signals that are 9 weeks apart. No
  521. penalty is assessed for signals that are 10 or more weeks apart.
  522.  
  523. Moving averages don't mean anything for data sets that do not represent prices,
  524. such as the S&P 500 P/E ratio and dividend yield.
  525.  
  526. NAV does not adjust for loads; the price histories are as reported in the
  527. newspaper.
  528.  
  529.  
  530. Accuracy
  531. --------
  532.  
  533. You should treat the results of running NAV as a very good approximation of the
  534. real world. Don't expect the yearly results to match numbers in prospectuses,
  535. ads, or newsletters. NAV data is typically sampled once a week, on Friday or
  536. the weekend. Also, some distributions are recorded on X-dividend dates, but
  537. reinvestment is not calculated until the next Friday/weekend day, so there will
  538. be a small amount of error. To be more accurate, the NAV on the X-dividend date
  539. should be present, but this is not available for all of the current data sets.
  540. The more accurate method is used for most distributions paid in 1996 and later,
  541. but not for most prior data.
  542.  
  543.  
  544. Reading in the Data
  545. -------------------
  546.  
  547. When you run NAV, the first thing you'll see is the copyright, followed by an
  548. indication of whether LIM or XMS memory is available, and how much. Then, NAV
  549. will report how many funds it is reading, and it will start the first read
  550. pass. During the first read pass, the size of various data structures is
  551. determined, but only a few data items are stored. As each fund is read, a dot
  552. will be written to the screen. Eighty dots will fit on one line, so you can
  553. estimate how far along the reading pass is. After completing the first read
  554. pass, NAV will allocate memory to store the data. Then it will execute the
  555. second read pass, during which data is stored, and again a dot will be written
  556. for each. After the second read pass, NAV reports how much memory was used, and
  557. the time it took to load the data. The memory may be "FAR" which means
  558. conventional, or "UMB" which means XMS Upper Memory Blocks, or "HMA" which
  559. means the XMS High Memory Area, or "EMB" which means XMS Extended Memory
  560. Blocks, or "LIM" which means Lotus-Intel-Microsoft expanded memory. The numbers
  561. are in bytes.
  562.  
  563.  
  564. Calculating Moving Average Values
  565. ---------------------------------
  566.  
  567. Following the data input sequence, NAV will start calculating optimal moving
  568. average values. You'll see output such as the following for each fund:
  569.  
  570.   EBENEZER SCROOGE FUND  time=:29
  571.  
  572. Each fund name is reported, along with the amount of time it took to calculate
  573. the optimal moving average values, if longer than one second. The values
  574. themselves are not reported at this time, but are visible in the upper
  575. right-hand corner of each fund graph in the analysis screen, if M is pressed to
  576. see the moving average. They will look like this:
  577.  
  578.   EMA .46 (+2-4)
  579.  
  580. In this case, an exponential moving average is used, with a weight of .46 and
  581. buy and sell thresholds of +2% and -4% respectively. After all funds have been
  582. optimized, the total amount of time to optimize all the funds will be reported,
  583. then you'll be asked to press Enter. Once you do, you'll be flipping between
  584. the select screen and the analysis screen to view and analyze the data.
  585.  
  586.  
  587. Trial and Eval Periods
  588. ----------------------
  589.  
  590. Before calculating moving average values, NAV will try to separate the price
  591. data for each fund into two parts: the trial period and the eval period. The
  592. idea is to use only the trial period data to form the moving average values,
  593. and then apply the values to the eval period data. NAV determines the most
  594. recent whole year for which data is available. This, plus any trailing partial
  595. year, will be the eval period, if at least 100 data points precede it (they
  596. become the trial period). A whole year must begin in the first week of January,
  597. and end in the last week of December. If a whole year cannot be found, or there
  598. are less than 100 prior data points, then there is no eval period, and the
  599. entire price history is put in the trial period. Examples: for a fund with data
  600. from 2/3/95 to 4/20/96 there is no eval period, because there is no whole
  601. calendar year present. For a fund with data from 11/14/94 to 4/20/96 there is
  602. no eval period, because while calendar year 1995 is present, there are not 100
  603. data points that precede it. For a fund with data from 9/2/88 to 4/20/96 the
  604. eval period starts on 1/1/95 and includes both calendar year 1995 and ytd 1996.
  605.  
  606. Moving averages are most useful if there are separate trial and eval periods.
  607. This is because the moving average values must be calculated over the trial
  608. period, and then applied to the eval period. If the same data points are used
  609. to both calculate and also apply the values, the results will be subject to
  610. "overfitting". That is, the algorithm "cheats" by allowing itself to select
  611. values which optimize the equations over all the data. To be fair, the
  612. algorithm should use only part of the data to calculate the values, allowing
  613. you to evaluate the performance over an independent period. In this sense,
  614. "performance" applies to the moving average values, and therefore the algorithm
  615. that calculates them. When moving averages are graphed (by pressing M in the
  616. analysis screen), you will see a vertical blue line separating the trial period
  617. from the eval period. If the line is not present, then there are no separate
  618. trial and eval periods, and the moving average is affected by overfitting. Such
  619. a moving average can change with each new data point that is added; therefore,
  620. don't use it to make buy/sell decisions until enough data has accumulated to
  621. form separate trial and eval periods. Overfit moving averages can still be
  622. somewhat useful in showing how the algorithm is selecting moving average
  623. values.
  624.  
  625.  
  626. OPT
  627. ---
  628.  
  629. The OPT file is generated by NAV, and contains moving average values, such as
  630. window sizes, weights, and buy and sell thresholds. It also contains
  631. information about each fund, such as the number of data points and the first
  632. eval period date, so NAV can determine whether the values are up-to-date. If a
  633. .NAV file has grown (added new data points) since the last time an OPT entry
  634. was generated for it, the values may need to be recalculated. This will depend
  635. on whether an eval period exists for the fund, and whether the eval period
  636. matches the one in OPT. For funds which have an eval period, adding one or a
  637. few new data points will usually not trigger a recalculation of moving average
  638. values. But once the first date of a new year is added, the eval period will be
  639. moved forward by one year, and a recalculation is necessary. Usually this will
  640. be done by me, not you, so you will seldom if ever be required to wait for a
  641. lengthy recalculation to complete. Funds which do not have an eval period must
  642. be recalculated when any new data is added. If you ever suspect that OPT does
  643. not contain optimal values, delete it and NAV will recreate it automatically.
  644. Or you can use the /REOPT switch, or the O key. On my system, a 386/25Mhz, it
  645. takes six hours to calculate a fresh OPT file. NAV will look for OPT in the
  646. current directory. OPT is an encrypted file.
  647.  
  648.  
  649. Select and Analysis Screens
  650. ---------------------------
  651.  
  652. Once NAV has loaded the data and displayed the moving average values, it will
  653. ask you to press Enter to continue. When you do, NAV will switch to full-screen
  654. graphics mode. After that, NAV will switch between two screens, called the
  655. select screen and the analysis screen. Press Enter to switch between these two
  656. screens. Pressing Q in either screen will quit (exit) the program, after asking
  657. you to confirm.
  658.  
  659. The select screen displays a color-coded list of funds, a cursor box, a
  660. mini-graph (upper right-hand corner), and a category color legend (lower
  661. right-hand corner). You can move the cursor box up and down the list with the
  662. UpArrow and DownArrow keys, or the PageUp and PageDown keys, or by clicking on
  663. the fund you want with a mouse. The Home and End keys will move the cursor to
  664. the top or bottom of the list, respectively. To select a fund with the
  665. keyboard, position the cursor box over it and press the Space bar. A red
  666. checkmark will appear to the left of selected funds. When one or more funds
  667. have been selected, press Enter to switch to the analysis screen for a more
  668. detailed look at the selected funds. If you press Enter before selecting any
  669. funds, the fund that the cursor is on is automatically selected before
  670. switching to the analysis screen; after returning to the select screen, it will
  671. be automatically deselected. While in the select screen, the mini-graph will
  672. display a simplified graph of the data for the fund in the cursor box.
  673.  
  674. The color used for the fund name is based on the type of the fund; aggressive
  675. growth funds are shown in light pink, international funds in bright pink,
  676. growth funds in red, and so on. Indices, which may not be funds, are shown in
  677. purple. A fund that has not been assigned to a category will appear in white,
  678. at the bottom of the list. Normally funds are grouped by category, and
  679. alphabetically within each category, but pressing C will disable the category
  680. sort, so they are listed alphabetically without regard to category. Pressing C
  681. again will restore the category grouping. Fund names are limited to 40 letters
  682. in length, so long names are truncated. Note that funds placed into your
  683. portfolio (see below, the S (Select) key) will be in a category near the bottom
  684. of the list, if portfolio grouping (the G key) is enabled.
  685.  
  686. The analysis screen displays the selected funds in detail. If only one fund is
  687. selected, it will fill the entire screen. If two funds are selected, each will
  688. get half the screen, and so forth. There is no limit to the number of funds you
  689. can select, but you will find that it is difficult to view the graphs if there
  690. are more than two of them. The bottom axis is time, earliest dates on the left,
  691. most recent on the right. The vertical axis is money, and is scaled according
  692. to each fund. If more than one fund is present, it will be scaled for all funds
  693. according to the maximum of all of them. Statistics are displayed in the upper
  694. left-hand corner. The yearly returns, including year-to-date (ytd) are shown,
  695. as is the total return over the entire time period (annualized), and the 1-,
  696. 3-, 5-, and 10-year averages (annualized, relative to the most recent date).
  697. Negative percentages are enclosed in parentheses. These are all in the first
  698. column.
  699.  
  700. Yearly returns start on the last data point for the previous year (or if that
  701. cannot be found, the first data point for the current year, as long as it is
  702. within the first week of the year), and end with the last data point for the
  703. current year (which must be in the last week of the year; that is, between
  704. December 25 and December 31, inclusive). Year-to-date is also calculated from
  705. the last data point of the previous year, as long as it is within the last week
  706. of the year; if that data point cannot be found, the first data point of the
  707. current year is used, as long as it is within the first week of the year; if
  708. that also cannot be found, but there is preceding data, then no valid ytd
  709. calculation can be made. If you notice some yearly or ytd calculations are
  710. missing, it is because valid beginning and ending data points cannot be found.
  711. The program logic to figure this out is very complicated, so if you notice
  712. problems, please let me know, and send example data to demonstrate the problem.
  713.  
  714. In the second column, the following are shown: volatility, reward/risk ratio,
  715. best returns, nav and dist summaries, and tax efficiency. Volatility is the
  716. standard deviation of the quarterly returns; it may be misleadingly low for
  717. funds with short histories. The reward/risk ratio is the return divided by the
  718. volatility. If the fund has a long enough history to have a 3-, 5-, or 10-year
  719. return, the longest of these is used. Otherwise, the total start-to-end return
  720. is used. I look for funds with a reward/risk ratio of 2.0 or above. Another way
  721. of interpreting the reward/risk ratio is whether the risk being taken
  722. (volatility) is sufficiently compensated for by the return. The best return is
  723. the annualized result of following the best moving average values; they will be
  724. for the entire fund unless it is long enough to be divided into trial and eval
  725. periods. If it does have separate trial and eval periods, there will be a set
  726. of best values, one for each period. The nav summary shows the absolute change
  727. in nav from first to last data point, and the dist summary shows the total
  728. amount of distributions per share from first to last data point. The nav and
  729. dist summaries are used to calculate tax efficiency, which is the percentage
  730. gain retained in the share price. Say that a fund gains $10 per share and pays
  731. out $8 total distributions per share; the tax efficiency is 55.6%, since $10
  732. out of a total $18 gain was retained in the share price. Use this statistic to
  733. determine which funds to place in tax-deferred accounts, such as IRAs or
  734. 401(K)s.
  735.  
  736.  
  737. Tax Efficiency
  738. --------------
  739.  
  740. Some of my sources of data do not provide distribution data explicitly;
  741. instead, they use the distributions to adjust the price history, and then throw
  742. the distributions away. This is fine for reflecting the true performance of the
  743. fund (ignoring taxes), but it loses important information. You cannot tell how
  744. much of a tax burden the fund has created, year to year. For this reason, some
  745. of the .NAV files have "excluded" regions. The purpose of these regions is to
  746. exclude certain time periods from the tax efficiency calculation, since they
  747. include price data that has been adjusted for distributions.
  748.  
  749. Go into the select screen, and move the cursor box to Fidelity Value in the
  750. list of growth funds, then press Enter to switch to the analysis screen. Press
  751. D to see the distribution graph. This is an example of a fund for which all the
  752. distributions are present; Fidelity Value pays distributions in December of
  753. each year. Now press Enter to go back to the select screen, move the cursor box
  754. to Longleaf Partners, and press Enter to switch to the analysis screen. You
  755. will see in the distribution graph that there are distributions from December
  756. 1995 on, but none previous. This fund pays a distribution every year, just like
  757. Fidelity Value, but because the data for this fund comes from a source that
  758. uses the distributions to adjust the price history, the distributions are not
  759. present. The tax efficiency is still correct, however, because the adjusted
  760. region has been excluded from the tax efficiency calculation. Once I acquire a
  761. data set and start maintaining it, I maintain the distributions explicitly.
  762.  
  763. Tax efficiency will be meaningless for indices such as the S&P 500, or DJIA.
  764.  
  765.  
  766. Logarithmic Graphs
  767. ------------------
  768.  
  769. The vertical (money) axis for both the mini-graph in the select screen and the
  770. main fund graph in the analysis screen is logarithmic. Traditionally, the
  771. vertical axis for financial/investment graphs is logarithmic, so that steady
  772. rates of return and the effects of compounding result in a straight line. You
  773. can change between logarithmic and linear money axis with L key. "LOG" or "LIN"
  774. will appear in bright pink in the upper right-hand corner of the screen (in
  775. both the select screen and the analysis screen) to indicate which mode is
  776. active. The distribution graph is always linear, in cents per share.
  777.  
  778.  
  779. Mouse
  780. -----
  781.  
  782. If your computer has a Microsoft-compatible mouse, NAV will use it for several
  783. functions. In the select screen, you can use the mouse to click on fund names
  784. to select or deselect them. In the analysis screen, you can use the mouse to
  785. test various date and price points on the fund graphs, and to see performance
  786. over various periods. Moving the mouse around will display the date and value
  787. at the tip of the mouse pointer. Clicking once will fix one endpoint of a line
  788. that you can stretch out ("rubber band"). When the mouse is over the desired
  789. second endpoint, clicking a second time will fix it in place. The endpoint
  790. values and the performance over the period are reported in bright pink in the
  791. third column in the upper left of the fund graph. Use this to determine
  792. approximate fund performance over arbitrary or non-standard timeframes.
  793. Clicking a third time will erase the line, and start over. A line segment must
  794. be contained in one fund graph to be meaningful.
  795.  
  796.  
  797. Zoom
  798. ----
  799.  
  800. Sometimes it is difficult to see the detail of current price moves if the
  801. history gets long, and recent prices are squeezed up against the right-hand
  802. axis. To "zoom" in on the last full year, plus the current ytd, press Z. To
  803. unzoom, press Z again. Zoom is a global setting, and will affect the mini-graph
  804. in the select screen as well as the full graph in the analysis screen. When
  805. zoom is active, the letter Z in bright pink will appear in the upper right-hand
  806. corner of the screen (in both the select screen and the analysis screen).
  807.  
  808.  
  809. A $1 Investment
  810. ---------------
  811.  
  812. Since all mutual funds and indices have different share prices, NAV puts them
  813. all on the same scale by "investing" $1 in each of them on the earliest date
  814. for which there is data, and following what happens to the $1 investment as the
  815. share price fluctuates, distributions are paid (and reinvested), and share
  816. splits occur. This is why the graphs for all funds start at $1 on the
  817. left-hand vertical axis.
  818.  
  819.  
  820. Select Screen Bars
  821. ------------------
  822.  
  823. Initially, the select screen displays a mini-graph, a category color legend,
  824. and a list of the fund names, alphabetized within each category. However,
  825. there are various bar charts that can replace the mini-graph and category color
  826. legend. Pressing each key a second time will change back to the mini-graph and
  827. legend. Each bar chart is sorted from longest bar to shortest, except for
  828. volatility, which is sorted from shortest to longest. The length of each bar
  829. corresponds to the value of the statistic associated with each fund. Note that
  830. the charts corresponding to returns can be negative; they will have a bar
  831. extending to the left rather than to the right. Volatility and tax efficiency
  832. by definition cannot be negative. For funds not long enough to have a given
  833. return, the bar length will be 0. The type of bar chart being displayed is
  834. reported near the end of the top (copyright) line.
  835.  
  836. V - Volatility
  837. R - Reward/risk
  838. T - Total return
  839. Y - Year-to-date
  840. X - taX efficiency
  841. 1 - 1-year return
  842. 3 - 3-year return
  843. 5 - 5-year return (note: many funds don't have 5 years of data)
  844. 0 - 10-year return (note: few funds have 10 years of data)
  845.  
  846.  
  847. Keys
  848. ----
  849.  
  850. Valid keys for select screen:
  851.   Enter - switch to analysis screen
  852.   Space - select/unselect current fund
  853.   S - Select/unSelect current fund for portfolio
  854.   G - Group/unGroup portfolio funds
  855.   UpArrow, PageUp, Home - move cursor box up
  856.   DownArrow, PageDown, End - move cursor box down
  857.   V - toggle Volatility bars
  858.   R - toggle Reward/risk bars
  859.   T - toggle Total return bars
  860.   Y - toggle Ytd return bars
  861.   X - toggle taX efficiency bars
  862.   C - toggle Category sort order
  863.   1,3,5,0 - toggle 1-, 3-, 5-, and 10-year return bars
  864.    (note: many funds don't have 5 years of data; few funds have 10 years)
  865.  
  866. Valid keys for analysis screen:
  867.   Enter - switch to select screen
  868.   UpArrow - move to previous fund
  869.   DownArrow - move to next fund
  870.   D - toggle Distribution information
  871.   M - toggle Moving average information
  872.  
  873. Valid keys for either screen:
  874.   U,W,E,A,B - use Unweighted/Weighted/Exponential/Adaptive/Variable Moving
  875.     Average
  876.   O - recalculate Optimal moving average values
  877.   Y - reselect optimal moving average type
  878.   P - Print screen
  879.   Z - toggle Zoom
  880.   L - toggle Logarithmic/Linear money axis
  881.   H,?,F1 - display Help screen
  882.   ! - execute COMMAND.COM
  883.   Q - Quit
  884.  
  885.  
  886. Cursor Box
  887. ----------
  888.  
  889. When in the select screen, the UpArrow and DownArrow keys cause the cursor box
  890. to move up and down. The PageUp key will cause the cursor box to move to the
  891. top of the page if it is not already there, or to the top of the previous page
  892. if it is. Similarly, the PageDown key will cause the cursor box to move to the
  893. bottom of the page if it is not already there, or to the bottom of the next
  894. page if it is. The UpArrow and DownArrow keys can also be used in the analysis
  895. screen to cycle through the funds, as long as there is only one fund selected.
  896. The Home and End keys will move the cursor box to the top or bottom of the
  897. list, respectively.
  898.  
  899.  
  900. Viewing Distributions
  901. ---------------------
  902.  
  903. The default is to not view distributions. If you are in the analysis screen,
  904. press D and the distributions will be displayed in a small graph below the
  905. price data. Press D again and the distribution graph will be removed. The
  906. distributions are shown broken down by long-term capital gains (blue) and
  907. dividends plus short-term capital gains (red). Dividends are grouped with
  908. short-term capital gains since they are taxed at the same rate. The percent
  909. breakdown is shown in the upper left hand corner of the distribution graph.
  910. The vertical white line shows the cumulative previous distributions, and the
  911. vertical axis is in dollars per share.
  912.  
  913.  
  914. Viewing Moving Averages
  915. -----------------------
  916.  
  917. The screen can get cluttered when moving averages are displayed, so by default
  918. they are not. Select a fund, such as Fidelity Magellan, and switch to the
  919. analysis screen. Then press M. This will turn on the "best" moving average. The
  920. blue price line will be overlaid with the peach moving average curve. Above and
  921. below the moving average curve are sequences of dots which show the buy and
  922. sell thresholds. When a buy signal occurs, a green balloon points to it. A red
  923. balloon points to a sell signal. The performance of an actual investment
  924. following the signals is shown in green, and reported in the statistics. The
  925. blue vertical line at the beginning of the last complete calendar year shows
  926. where the trial period ends and the eval period begins. The investment amount
  927. is resynchronized to the actual price value on that date.
  928.  
  929. There is also a white dot on the blue eval period border, and one on the most
  930. recent date; these show where the "average" investment (driven by buy and sell
  931. signals) would end up at the end of each period. To calculate the optimal
  932. moving average values, NAV calculates every possible combination of values, and
  933. saves the one which gives the best final investment value. While it is doing
  934. this, it sums the investment results of every combination, and divides by the
  935. number of combinations to form the average.
  936.  
  937. When not "invested" in the fund, it is assumed that you are "invested" in a
  938. money market account. NAV has data which tells how much interest you would earn
  939. by "parking" your investment in a money market account, as a yearly average,
  940. which is a reasonable approximation. The data comes from the Vanguard Money
  941. Market Prime Reserves (a very typical money market fund), and from 3-month
  942. T-Bill rates.
  943.  
  944. Pressing M again will erase the moving average, and display the price graph.
  945. Clutter can be reduced if you zoom in on the eval period.
  946.  
  947.  
  948. Changing a Moving Average
  949. -------------------------
  950.  
  951. You can try any of the three types of moving average whenever you want. If
  952. you're looking at a price graph using EMA and you'd like to see UMA, just
  953. press U. The moving average values will be calculated, and you'll be asked to
  954. press Enter to continue. Once you set a different moving average for a fund, it
  955. will be remembered as the "preferred" moving average, until either another
  956. moving average is selected or the OPT file is deleted or overwritten. Pressing
  957. W will select WMA, and pressing E will select EMA. Pressing A will select AMA,
  958. and pressing B will select VIDYA. If you are in the analysis screen, the moving
  959. average will be selected for all funds being displayed. If you are in the
  960. select screen, the moving average will be selected for all funds in the list.
  961.  
  962.  
  963. Portfolio of Funds
  964. ------------------
  965.  
  966. You can form a portfolio of funds with NAV. In the select screen, position the
  967. cursor box over the desired fund, and press S. This will select the fund for
  968. inclusion in the portfolio. Once a fund is in the portfolio, pressing S again
  969. removes it. By default, portfolio funds remain in their categories, but are
  970. indicated by a light yellow block which appears to the left of their name. But
  971. pressing G will cause all portfolio funds to be grouped together in a portfolio
  972. category near the bottom of the fund list. Pressing G again will remove the
  973. portfolio category, and place the portfolio funds back in their original
  974. categories. Putting the funds you invest in into a portfolio will help you
  975. compare their performance to their peers, and also to each other. It is most
  976. useful when viewing the Y,1,3,5, etc bar charts. Note: if you have portfolio
  977. category grouping enabled, it can be confusing to select a portfolio fund and
  978. see it immediately disappear from its category group. Remember that it was
  979. moved to the portfolio category, which may be several screens down the list.
  980. The portfolio funds are recorded in a file called PRTFOLIO, and readded to the
  981. portfolio the next time you run NAV. If you want to remove the portfolio and
  982. start again, just delete PRTFOLIO. The state of the portfolio category grouping
  983. variable is also recorded in PRTFOLIO. If a portfolio change is made while NAV
  984. is running, it will write out a new PRTFOLIO file before exiting.
  985.  
  986.  
  987. Printing the Screen
  988. -------------------
  989.  
  990. If you have an HP laserjet compatible printer connected to your LPT1: port,
  991. just press P in either the select screen or the analysis screen to send an
  992. image of it to the printer. Sending data to non-existent printers can sometimes
  993. hang the computer, so you'll be asked to confirm before the data is sent.
  994.  
  995.  
  996. Help
  997. ----
  998.  
  999. Pressing H or ? or F1 will display a help screen showing what the various
  1000. keystrokes do. Help in the select screen is different from help in the analysis
  1001. screen, because the valid keystrokes for each screen are different. On the
  1002. second line of each screen (just below the copyright line) is one line of help
  1003. on the most common keystrokes available in each screen.
  1004.  
  1005. Select screen help:
  1006.  ENTER=ANALYSIS SPACE=SELECT S,G=PORTFOLIO BARS=Y,V,R,T,X,1,3,5,0 H=HELP
  1007.  
  1008. Analysis screen help:
  1009.  ENTER=SELECT M=MOVINGAVG D=DIST P=PRINT Z=ZOOM H=HELP
  1010.  
  1011.  
  1012. Executing COMMAND.COM
  1013. ---------------------
  1014.  
  1015. If you want to execute DOS commands, press ! to execute COMMAND.COM. NAV will
  1016. remain in memory, and when you execute "EXIT", COMMAND.COM will exit, and
  1017. you'll be returned to NAV. For this to work, the COMSPEC environment variable
  1018. must be set to the full path location of COMMAND.COM. While executing
  1019. COMMAND.COM, the PROMPT will be modified with the prefix "[NAV]" to remind you
  1020. that NAV is present in memory. Also, NAV saves the current directory prior to
  1021. executing COMMAND.COM, and restores it after COMMAND.COM exits.
  1022.  
  1023.  
  1024. Quit
  1025. ----
  1026.  
  1027. Pressing Q will cause NAV to exit, but only after you've confirmed that you
  1028. really want to exit.
  1029.  
  1030.  
  1031. Maximum Data Sizes
  1032. ------------------
  1033.  
  1034. There is no fixed limit on the number of funds that can be analyzed, but each
  1035. fund is limited to 64K of price data. The number of unique dates across all
  1036. funds is limited to 32768; with the current set of funds, there are less than
  1037. 1500 unique dates, so the limit is a long way off. My own view on the length of
  1038. the price histories is that approximately seven years of data is the best. With
  1039. less than that, the confidence level is not so high that the moving average
  1040. values have accurately captured the behavior trends. With more than that, it is
  1041. possible that the moving average values are trying to capture several different
  1042. types of behavior patterns. For instance, manager changes or objective changes
  1043. can easily occur in long price histories. Fidelity in particular moves
  1044. portfolio managers around among their funds. Significant asset growth in a fund
  1045. can change the behavior trends too.
  1046.  
  1047.  
  1048. Dates
  1049. -----
  1050.  
  1051. NAV is written so that the earliest year it can handle is 1960. Since dates in
  1052. .NAV files are specified by two digits, this means NAV can handle anything from
  1053. January 1, 1960 up to December 31, 2059. To enter dates such as 1/1/2000 use
  1054. the form: "1/1/00". The earliest date used in the current set of .NAV files is
  1055. 1/1/86. To keep columns lined up in the data files, dates can have leading
  1056. zeros, such as "01/01/00"; NAV will ignore the leading zeros.
  1057.  
  1058.  
  1059. Memory Allocation
  1060. -----------------
  1061.  
  1062. NAV stores several different kinds of data for each fund, but by far the
  1063. largest is the price data. NAV prefers to store the price data in HMA memory,
  1064. conventional (FAR) memory, and then UMB memory, and will store the smallest
  1065. funds first. If not all the data fits, LIM memory will be used next, if it
  1066. exists. EMB is the least preferred type of memory, because it requires a swap
  1067. space to be allocated to access the data. If EMB is needed (and available), NAV
  1068. goes through the laborious process of deallocating everything it has allocated
  1069. up to that point, allocating a swap space big enough to swap in the largest
  1070. fund, and then restarting the allocation process. If all of this is done and
  1071. there is *still* not enough memory to store all the data, NAV attempts to limp
  1072. along with as much data as will fit in memory. The swap space can be in HMA,
  1073. UMB, or conventional memory. If NAV has to use LIM or EMB memory, it reorders
  1074. the remainder of the funds to store the largest one first, so that LIM and EMB
  1075. memory, which are handled in 16K and 64K chunks, respectively, are used most
  1076. efficiently.
  1077.  
  1078.  
  1079. The SETTINGS File
  1080. -----------------
  1081.  
  1082. By default:
  1083.   Zoom is turned off
  1084.   Vertical axis in analysis screen is logarithmic
  1085.   Moving average is not shown
  1086.   Distributions are not shown
  1087.   Funds are sorted into categories
  1088. If any of these values are changed, the new values are recorded in the SETTINGS
  1089. file, so that when NAV is run again, the same values are used. This keeps NAV
  1090. looking the same from one run to the next.
  1091.  
  1092.  
  1093. 94.ZIP
  1094. ------
  1095.  
  1096. If you are not a registered user and you run NAV on the .NAV files in DATA.ZIP
  1097. with no encryption key, you will get a lot of warnings about data files that
  1098. are not accessible. However, at least one fund from each category (growth,
  1099. bond, international, etc) is encrypted in such a way that NAV can still access
  1100. the data. If, however, you'd like to see NAV handle a much larger group of
  1101. data files, download 94.ZIP, unpack the .NAV files in 94.ZIP, and run NAV on
  1102. them. They contain most of the funds from DATA.ZIP, but only current through
  1103. the end of 1994 (there are fewer data files in 94.ZIP because some funds do not
  1104. have data prior to 1/1/95). This will show you what NAV can do with 294 funds.
  1105. Don't get the .NAV files from 94.ZIP mixed up with those from DATA.ZIP. Before
  1106. you unzip 94.ZIP, delete all the .NAV files that came from DATA.ZIP, otherwise
  1107. you'll have some .NAV files from each collection, and it will be confusing. The
  1108. .NAV files contained in 94.ZIP are encrypted in such a way that NAV can read
  1109. them even without a key (they can all be decrypted with A0.EXE; see below).
  1110. After you evaluate NAV with them and become a registered user, you will never
  1111. need 94.ZIP again.
  1112.  
  1113.  
  1114. Good and Bad Funds
  1115. ------------------
  1116.  
  1117. How were the funds in DATA.ZIP selected? For most of them, they were selected
  1118. because they fit my criteria as worthwhile potential investments. I lean toward
  1119. low or noload funds with low total expenses, long-term, experienced management,
  1120. and consistently good long-term performance. But you'll also find some
  1121. outstanding load funds, and some newer funds too. You'll also find some of the
  1122. worst funds, which were specially selected to demonstrate not only the best,
  1123. but also the worst that you can find in the mutual fund universe. Some of these
  1124. are:
  1125.  American Heritage
  1126.  Steadman American Industry
  1127.  Comstock Capital Value A
  1128.  Pathfinder (was: Prudent Speculator)
  1129.  44 Wall Street
  1130.  Mathers
  1131.  
  1132. There are also some funds included for their extreme volatility, such as
  1133. Lexington Strategic. Don't take the mere presence of data for a fund as an
  1134. indication that it is a good investment.
  1135.  
  1136. The purpose of these funds is for comparison with other funds to evaluate
  1137. potential investments. You won't find many bond funds, because they are
  1138. difficult for me to maintain up-to-date data for. Bond funds pay dividends all
  1139. the time, and it is hard for me to gather and maintain extensive distribution
  1140. histories for them.
  1141.  
  1142.  
  1143. Incorrect Data
  1144. --------------
  1145.  
  1146. If you find data which is not correct, such as missing distributions, let me
  1147. know. If you can supply the missing/correct data, that is an added plus. Say
  1148. for example Fidelity Value, which as a typical largecap growth fund normally
  1149. pays distributions once a year in December, pays an additional distribution in
  1150. April. There is a good chance I will miss it, as I would normally not check for
  1151. a distribution until December (or January). You can determine if a distribution
  1152. is missing by viewing the distribution graph. Often a sharp, unexpected drop in
  1153. the NAV value will also indicate a missing distribution; but if the drop is not
  1154. sharp, it may be overlooked.
  1155.  
  1156.  
  1157. Out of Memory
  1158. -------------
  1159.  
  1160. If you don't have at least a couple Megabytes of free expanded (LIM) or
  1161. extended (XMS) memory, you'll get an error message that NAV couldn't get
  1162. enough memory to store all the data. To view all the data, consider installing
  1163. a memory emulator, either LIM.SYS or XMS.SYS. Each will provide 8 Megabytes of
  1164. emulated memory by paging it to a disk file. Currently the data will require
  1165. 2.5 Megabytes of memory. Many .NAV files contain data from 9/88 to present
  1166. (10/96), about 400 data points. On a 386/25Mhz, it takes about 90 seconds per
  1167. fund to calculate the best moving average values. To do all files takes about
  1168. six hours. If all the values are available in OPT, loading the data and
  1169. applying the moving average values will take about ten minutes. When running
  1170. with a memory emulator, performance will be noticeably slower, and you'll see a
  1171. lot of disk activity as memory is read from and written to the emulation files,
  1172. but at least you're running (and seeing all the data)! I have a machine with
  1173. 1 Megabyte of memory, so I use XMS.SYS all the time. NAV will try to limp along
  1174. even if there is not enough memory to hold all the data, but if NAV cannot get
  1175. enough memory to store a few critical data structures, there is no point in
  1176. continuing, and NAV exits with an error message.
  1177.  
  1178.  
  1179. Installing Device Drivers
  1180. -------------------------
  1181.  
  1182. To avoid the nasty situation of installing a device driver in C:\CONFIG.SYS,
  1183. having it malfunction, and being unable to remove it, do the following.
  1184. Prepare a boot disk by putting a blank disk in A: and executing "FORMAT A: /S".
  1185. This will create a boot disk. Check to make sure COMMAND.COM was copied to A:.
  1186. If not, copy it there. All newer versions of DOS do this, but at least one
  1187. older version failed to do it. Test your new boot disk to make sure your
  1188. computer can boot off of it by pressing CTL-ALT-DEL. Create A:\CONFIG.SYS
  1189. containing only "DEVICE=A:\XMS.SYS", and copy XMS.SYS to A:, then reboot.
  1190. After your machine boots, execute "C:", "cd \NAV", and "NAV" to make sure NAV
  1191. runs ok. If so, then it is safe to modify your C:\CONFIG.SYS to contain
  1192. "DEVICE=C:\NAV\XMS.SYS". Use the same technique to test LIM.SYS before
  1193. installing, if you prefer expanded memory to extended memory.
  1194.  
  1195.  
  1196. XMS.SYS
  1197. -------
  1198.  
  1199. XMS.SYS emulates XMS 2.0 memory by paging to file C:\XMS20$$$.MEM, which it
  1200. will create as needed. Install it by adding the following line to your
  1201. CONFIG.SYS file:
  1202.   DEVICE=C:\NAV\XMS.SYS
  1203. Application programs such as NAV use interrupt 2Fh and an XMS control function
  1204. to access extended memory. There are three kinds of extended memory: (1) HMA,
  1205. (2) UMB, (3) EMB. XMS.SYS provides no HMA or UMB memory, but does provide 8
  1206. Megabytes of EMB memory. If true (non-emulated) extended memory is available
  1207. (for example, via HIMEM.SYS), NAV will take advantage of HMA and UMB, in
  1208. addition to EMB memory.
  1209.  
  1210.  
  1211. LIM.SYS
  1212. -------
  1213.  
  1214. LIM.SYS emulates Lotus-Intel-Microsoft (LIM) 3.2 memory by paging to file
  1215. C:\LIM32$$$.MEM, which it will create as needed. Install it by adding the
  1216. following line to your CONFIG.SYS file:
  1217.   DEVICE=C:\NAV\LIM.SYS
  1218. Application programs such as NAV use interrupt 67h to access expanded memory.
  1219. LIM memory is available as a sequence of 16K pages that must be mapped to a 64K
  1220. page frame to access them; 8 Megabytes of LIM memory is available.
  1221.  
  1222.  
  1223. .NAV File Format Example
  1224. ------------------------
  1225.  
  1226. Here is a short example of an unencrypted (ASCII) .NAV file:
  1227.  
  1228.   name=EBENEZER SCROOGE FUND
  1229.   category=GROWTH
  1230.   ;comments start with a semi-colon
  1231.  
  1232.   ;blank lines are fine too
  1233.   ;here is a distribution, with "income dividends", plus short- and long-term
  1234.   ;capital gains. these are in dollars and cents per share. the date is the
  1235.   ;"X-date" or ex-dividend date. this is the first date that the effect of
  1236.   ;the distribution is reflected in the reported per-share price. you can
  1237.   ;have up to 4 decimal places.
  1238.   12/30/61 div=.07 scg=.3025 lcg=1.73
  1239.   1/1/60=12.75 comments can follow NAV prices too
  1240.   2/3/60= this nav is missing, but will be interpolated
  1241.   3/4/60=6.80
  1242.   ;here's a share split, which is fairly rare for mutual funds:
  1243.   2/2/60 split 2 for 1
  1244.   ;here's the definition of an excluded region:
  1245.   1/1/61 exclude
  1246.   ;in this case, all price data prior to and including 1/1/61 will be
  1247.   ;excluded from the tax efficiency calculation, because distribution
  1248.   ;data has been used to adjust the prices, rather than being included
  1249.   ;explicitly.
  1250.  
  1251. Valid categories include:
  1252.   MAXGROWTH (aggressive growth)
  1253.   SMALLCAP
  1254.   GLOBALEQUITY ("international", "global", and "world")
  1255.   GROWTH
  1256.   GROWTHINC ("growth and income")
  1257.   INDEX
  1258.   EQUITYINC ("equity income")
  1259.   BALANCEDEQUITY (more stocks than bonds)
  1260.   BALANCEDBOND (more bonds than stocks)
  1261.   BOND
  1262.   GOLD
  1263.   SECTOR
  1264.  
  1265.  
  1266. Unencrypting .NAV Files
  1267. -----------------------
  1268.  
  1269. If you need access to the ASCII price histories, use A0.EXE and A1.EXE to
  1270. unencrypt the .NAV files. The .NAV files are encrypted in one of two ways;
  1271. either they are encrypted so that NAV can understand them without a key (a few
  1272. of them), or they are encrypted so that NAV requires a key to understand them
  1273. (the majority). A0 will unencrypt the former, and A1 will unencrypt the latter.
  1274. If you attempt to run them on the wrong type of data file, they will tell you.
  1275. The .NAV files in DATA.ZIP which do not require a key are:
  1276.  
  1277.   BRWIX.NAV - Brandywine
  1278.   JAVTX.NAV - Janus Venture
  1279.   PRITX.NAV - T Rowe Price International Stock
  1280.   FDVLX.NAV - Fidelity Value
  1281.   LLPFX.NAV - Longleaf Partners
  1282.   VWNFX.NAV - Vanguard Windsor II
  1283.   DJIA.NAV  - Dow Jones Industrial Average (index)
  1284.   SP500.NAV - S&P 500 Index
  1285.   FIIIX.NAV - Invesco Industrial Income
  1286.   TWBIX.NAV - American Century Balanced
  1287.   VWINX.NAV - Vanguard Wellesley
  1288.   NCINX.NAV - Nicholas Income
  1289.   LEXMX.NAV - Lexington Goldfund
  1290.   FBIOX.NAV - Fidelity Select Biotechnology
  1291.  
  1292. Examples:
  1293.   A0 BRWIX.NAV BRWIX.DAT
  1294. will create an unencrypted file called BRWIX.DAT.
  1295.   A1 ANALX.NAV ANALX.DAT
  1296. will create an unencrypted file called ANALX.DAT.
  1297.   A0 ANALX.NAV ANALX.DAT
  1298. will give you an error message, since ANALX.NAV requires A1, because a key is
  1299. necessary.
  1300.  
  1301. A1 will accept a KEY in one of three ways: (1) /KEY= on the command line, (2) a
  1302. file called KEY in the current directory, (3) KEY= in the environment. These
  1303. are the same three methods of supplying a key to NAV.
  1304.  
  1305.  
  1306. Encrypting .NAV Files
  1307. ---------------------
  1308.  
  1309. X0.EXE and X1.EXE are programs to encrypt ASCII files; they are the inverses of
  1310. A0 and A1. You may need to use them if, for example, you want to make some
  1311. modifications to a .NAV data file. X0 performs "default" (non-key) encryption,
  1312. and needs only two parameters: the names of the source and destination files.
  1313. For example,
  1314.   X0 BRWIX.DAT BRWIX.NAV
  1315. forms a default encryption of the ASCII file BRWIX.DAT and puts it in
  1316. BRWIX.NAV. X1 performs key encryption, and works identically, except that a
  1317. key must be present. If there is a KEY file or a KEY= environment variable,
  1318. they will be used. If not, or if a different key is needed, X1 accepts a /KEY=
  1319. parameter:
  1320.   X1 /KEY=FOO BRWIX.DAT BRWIX.NAV
  1321.  
  1322.  
  1323. Stocks?
  1324. -------
  1325.  
  1326. After you register, get the encryption key, and start viewing the entire set of
  1327. funds, you'll notice there is one for Microsoft stock. While NAV is intended
  1328. for analysis of mutual funds, it can be used to analyze price trends on other
  1329. securites such as individual stocks, as long as there is a price history
  1330. measured at regular intervals, ideally weekly closing prices.
  1331.  
  1332.  
  1333. Missing Distributions
  1334. ---------------------
  1335.  
  1336. You should be suspicious if you open the distribution graph and see no
  1337. distributions. Most funds pay at least one distribution each year, usually in
  1338. December. If you see only recent distributions it means previous distributions
  1339. have been used to adjust prices, rather than being represented explicitly in
  1340. the data. Funds with short histories (two years or less) may not have
  1341. experienced enough turnover yet to require a distribution. The detailed data
  1342. required for the most precise calculations are: the X-date (date on which the
  1343. distribution affected the reported price), amount of distribution broken down
  1344. by type (dividend, short- or long-term capital gain, in cents per share), and
  1345. the reinvest price on the X-date.
  1346.  
  1347.  
  1348. VGA
  1349. ---
  1350.  
  1351. While writing NAV, I found that the BIOS routines for writing dots on the
  1352. screen were too slow. To solve this, I wrote code which writes dots on the
  1353. screen much faster by accessing the VGA hardware directly. If you have problems
  1354. seeing the graphs on the screen, or something weird happens with the video
  1355. portion of the program, let me know.
  1356.  
  1357.  
  1358. 286
  1359. ---
  1360.  
  1361. NAV is written in C, but with some assembly language routines for maximum speed
  1362. and hardware access. Some 286 instructions are present, so NAV will not run on
  1363. 8088 CPUs. NAV uses very few floating point operations; most calculations are
  1364. done with integers. The only floating point operations are done to map the
  1365. graph to a logarithmic scale. Therefore the display portion of NAV will run
  1366. faster on a machine equipped with a math coprocessor. The initial data input
  1367. and optimization calculation portion of the program will not run any faster, as
  1368. it does no floating point calculations during that phase.
  1369.  
  1370.  
  1371. Bugs, Etc
  1372. ---------
  1373.  
  1374. If you notice a bug (error in the program), let me know, with as much detail as
  1375. you can. If a fund is in the wrong category, let me know, and why. For some of
  1376. these funds, it can be difficult to assign them to a category.
  1377.  
  1378.  
  1379. Did I Miss Anything?
  1380. --------------------
  1381.  
  1382. Is this documentation complete and easy to understand? If not, let me know what
  1383. I left out, or didn't explain clearly enough.
  1384.  
  1385.  
  1386. Future Releases
  1387. ---------------
  1388.  
  1389. I have a long list of things I'd like to do to improve NAV and add new
  1390. features. For right now I'm keeping this list to myself, but feel free to send
  1391. me suggestions for your favorite feature, or your favorite fund or index you'd
  1392. like to see added.
  1393.  
  1394.  
  1395.